package com.lipaluma.xml.mapping;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

import com.lipaluma.field.mapper.FieldMapper;
import com.lipaluma.field.merge.FieldMergedFunction;
import com.lipaluma.xml.adaptor.XmlAdaptor;
import com.lipaluma.xml.validator.XmlValidator;

@XmlAccessorType(XmlAccessType.FIELD)
public interface XmlFieldMapping {
	String getField();
	String getPattern();
	String getLocale();
	boolean isRequired();
	boolean isEachValueRequired();
	boolean isTrim();
	String getSeparator();
	boolean isKeepAll();
	String[] getFalseValues();
	String[] getTrueValues();
	List<? extends XmlAdaptor> getAdaptors();
	List<? extends XmlValidator> getValidators();
	List<? extends XmlAdaptor> getAdaptorsOnEachValue();
	List<? extends XmlValidator> getValidatorsOnEachValue();
	boolean isOneToMany();
	Class<? extends FieldMapper> with();	
	public abstract boolean isMultiple();	
	public boolean isId();
	public boolean fieldMerged();
	public FieldMergedFunction mergedBy();
	
}
